home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #5 & #6
/
Amiga Plus CD - 1995 - No. 5 and 6.iso
/
pd
/
serien
/
purity
/
nr.49
/
mathematik
/
newton.p
< prev
next >
Wrap
Text File
|
1995-06-24
|
3KB
|
124 lines
program newtonische_interpolation;
uses crt;
type feld1 = array [1..50,1..51] of real;
feld2 = array [1..49,1..49] of real;
vektor1 = array [1..49] of real;
vektor2 = array [1..49] of real;
var i,j,n: integer;
a: feld1;
fa: feld2;
ko: vektor1;
ma: vektor2;
procedure kopf;
begin
clrscr;
writeln("*******************************************************");
writeln("* N E W T O N I S C H E Interpolation *");
writeln("*******************************************************");
writeln;
write(" Anzahl der Stützstellen (max.50) ? ");
end;
procedure eingabe;
var i,j: integer;
begin
for i:=1 to n do begin
write(i," .x-wert, y-wert ");
for j:=1 to 2 do begin
read(a[i,j]);
write(" ");
end;
writeln;
end;
end;
procedure matrix1;
var i,j,x: integer;
begin
clrscr;
for i:=1 to n do
writeln(a[i,1]:10:2,a[i,2]:10:2);
writeln("****** Matrix1 *******");
for i:=2 to n do begin
write("i= ",i,"j= ");
for j:=3 to i+1 do begin
a[i,j]:=(a[i,j-1]-a[j-2,j-1]/a[i,1]-a[j-2,1]);
write(j:3,a[i,j]:8:2," ");
end;
writeln;
end;
writeln("... weiter mit tastendruck");
waitforkey;
end;
procedure matrix2;
var i,j: integer;
begin
clrscr;
writeln;
writeln("****** Matrix2 *******");
writeln;
if a[1,1]=0 then begin
for i:=1 to n-1 do fa[i,1]:=1;
end;
for i:=1 to n-1 do begin
write(fa[i,1]:10:2);
for j:=2 to i do begin
fa[i,j]:=fa[i-1,j-1]*a[i,1]-1+fa[i-1,j];
write(fa[i,j]:10:2);
end;
writeln;
end;
writeln("... weiter mit tastendruck");
waitforkey;
end;
procedure koeffizienten;
var i,j: integer;
begin
writeln("Brechnung der Koeffizienten ");
for i:=1 to n-1 do ma[i]:=a[i+1,i+2];
for i:=1 to n-1 do begin
for j:=1 to n-1 do begin
writeln(j,ma[j+i-1]:10:2,fa[j+i-1,j]:10:2,ko[i]:10:2);
ko[i]:=ko[i]+ma[j+i-1]*fa[j+i-1,j];
end;
writeln("Koef ",i," = ",ko[i]:10:2);
end;
end;
procedure loesung;
var i,j: integer;
begin
writeln("*********************************************");
writeln("*************** L Ö S U N G ****************");
writeln("*********************************************");
write(a[1,2]:10:2);
for i:=1 to n-1 do begin
if ko[i]>=0 then write(" + ");
write(ko[i]:10:3,"x^ ",i," ");
end;
writeln;
writeln("... weiter mit tastendruck");
end;
begin
kopf;
readln(n);
if n=0 then begin
writeln(" ## fehlerhafte eingabe ");
exit;
end;
eingabe;
matrix1;
matrix2;
koeffizienten;
loesung;
end.